package cn.tedu.oop2;
/**测试静态代码块
 * 1.位置:类里方法外
 * 2.执行实际:属于静态资源,随着类的加载而加载,优先于对象加载
 *  并且静态资源只需要加载一次
 * 3.作用.用于加载那些需要第一时间就加载,并且只需要加载一次的资源,常用来初始化
 * 静态构造代码块->构造代码块->构造方法[对象创建成功]->普通方法->局部代码块
 * */
public class TestStatic3 {
    public static void main(String[] args) {
        Person p=new Person();
        Person p2=new Person();
        System.out.println(1);
        p.play();
    }

}
class Person{
    /**静态代码块:static
     * 1.位置:类里方法外
     * 2.执行实际:属于静态资源,随着类的加载而加载,优先于对象加载
     * 并且静态资源只需要加载一次
     * 3.作用.用于加载那些需要第一时间就加载,并且只需要加载一次的资源,常用来初始化
     * */
    static {
        System.out.println("静态构造代码块");
    }

    public Person() {
        System.out.println("我是一个无参构造");
    }

    /**构造代码块
     * 1.位置:类里 方法外
     * 2/执行实际:每次创建对象的时候
     * 3.作用:用于提取所有构造方法的共性功能*/

     {
        System.out.println("我是构造代码块");
    }
    public void play(){
        System.out.println("我是一个普通方法" );
        /**局部代码块
         * 位置；方法里
         * 执行实际:当局部代码块所在的方法被调用时
         * 作用：用于限制变量的作用范围*/
        {
            System.out.println("我是一个局部代码块");}
    }

}